docs(ios-uikit): pin/save, pin conversations and thread subscription parity - #519
Open
shreeyajoshi-cometchat wants to merge 4 commits into
Open
docs(ios-uikit): pin/save, pin conversations and thread subscription parity#519shreeyajoshi-cometchat wants to merge 4 commits into
shreeyajoshi-cometchat wants to merge 4 commits into
Conversation
…ThreadSubscription Core features now match the other platforms: - Pin Message and Save Message merge into one "Pin & Save Messages" section. iOS was the only platform splitting them. - Add "Pin Conversations", which iOS shipped in 5.1.22 undocumented. - Thread Subscription becomes a subsection of Threaded Conversations rather than a top-level section. Every component-level `enableThreadSubscription` the docs described does not exist. The only real gate is on UIKitSettings, and the components expose the `hideThreadSubscription*` half — which is what the other platforms document too. Removed from the message list, both headers, the pinned-messages page (invented wholesale there) and the guide, folding the behaviour each section described into the flag that does exist. `hideThreadSubscriptionOption` is likewise not a CometChatMessageList property; it lives on AdditionalConfiguration, so the sample now sets it there. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
The feature ships on by default and has no dashboard flag, so CometChatThreadSubscriptionConfig.setEnabled(false) is the only way to remove it from an app — and nothing in the iOS docs said so. Integrators had no way to find the switch short of reading the kit source. Adds a "Turning the Feature Off" section to the guide covering the call itself, how it ANDs with the per-instance hideThreadSubscription* flags (gate = whole app, hide flags = one screen), and that it can be flipped at any point rather than only before CometChatUIKit.init. A note records that this is the only control that will ever exist, and names the Android and React Native equivalents so a reader arriving from another kit lands in the right place. A warning ported from the RN guide records that closing the gate hides the controls but does NOT stop subscriptions or their notifications — users are still auto-subscribed by replying or being @-mentioned. Also corrects the reference gate snippet, which listed two of its three clauses and omitted the gate itself, and cross-references the new section from the four places a reader meets the feature: core-features, the message list's hideThreadSubscriptionOption, and hideThreadSubscriptionButton on both headers. The two header pages already said "while leaving the feature on" without ever naming what turned it off. Signatures verified against the kit source: setEnabled takes an unlabelled Bool, isEnabled() returns Bool. Documents an API that is committed but not yet built or merged — if the type is renamed in review, these five files need the same rename. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Verified the bell's on-screen placement against the Android and React kit sources rather than component names. Every CometChat platform renders the subscription bell in the thread screen's top bar: Android's CometChatThreadScreen puts it in CometChatToolbar(actions:) and hides the reply-count bell, and React's CometChatThreadHeaderTopBar mounts SubscriptionToggle inside __top-bar. On iOS CometChatMessageHeader in thread mode is what lands it there. - Document CometChatMessageHeader as the bell to use, with a hosting example pinning it to the safe-area top. - Reframe the CometChatThreadedMessageHeader bell as a fallback for a thread screen with no top bar, matching how Android coordinates the two, rather than as a co-equal choice. - Drop the claim that this matches "where the React and React Native kits place theirs" — true of the placement, false of the component. React's bell is on CometChatThreadHeader and React Native trunk ships no header bell. - core-features: threadSubscription is enabled by default and spans both surfaces (the opt-in gate was removed with UIKitSettings.enableThreadSubscription). Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
|
Preview deployment for your docs. Learn more about Mintlify Previews.
💡 Tip: Enable Automations to automatically generate PRs for you. |
The conversations page had zero pin coverage across all 1,592 lines, while core-features linked to it as the component reference that "provides the pin/unpin option, the row indicator, and pinned-first ordering" — a promise the destination page did not keep. `enablePinConversation` was documented nowhere except one code sample. Every other platform documents this on its own conversations page: React Native, Android, React and Angular all do. Adds, modelled on the React Native section: - `enablePinConversation` and `hidePinConversationOption` prop sections. - A "Pinning Conversations" section covering pinned-first ordering, the private-to-user semantic, and confirm-on-unpin. - The two gates, which is the part that bites: the swipe action needs the `features.ux.conversations.pinned.enabled` app setting mapped AND `enablePinConversation`. The kit reads the app setting via `CometChat.isPinConversationEnabled()`, restored to the guard in uikit-ios 51a047c6c now that the backend has shipped the flag. - Admin pins, with the `pinnedAt` / `pinnedBy` reads an integrator needs to detect one. Both are @objc public on the SDK's Conversation; the kit's own `systemPinner` constant is internal, so the "app_system" sentinel has to be compared directly — noted as a gap against RN's `isSystemPinnedConversation()`. - The `PinConversationErrorCodes` table. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
1. Restructure, and remove an API that does not exist (
f2312791)Core features now match the other platforms: Pin Message and Save Message merge into one Pin & Save Messages section (iOS was the only platform splitting them), Pin Conversations is added, and Thread Subscription becomes a subsection of Threaded Conversations rather than a top-level section.
Every component-level
enableThreadSubscriptionthe docs described did not exist. It was removed from the message list, both headers, the pinned-messages page (invented wholesale there) and the guide, folding each described behaviour into the flag that does exist.hideThreadSubscriptionOptionis likewise not aCometChatMessageListproperty — it lives onAdditionalConfiguration, and the sample now sets it there.2. Document the opt-out (
cd990e9a)The feature ships on by default with no dashboard flag, so
CometChatThreadSubscriptionConfig.setEnabled(false)is the only way to remove it — and nothing in the iOS docs said so. Adds a Turning the Feature Off section covering the call, how it ANDs with the per-instancehideThreadSubscription*flags (gate = whole app, hide flags = one screen), and that it can be flipped at any time rather than only beforeCometChatUIKit.init.